1. Field of the Invention
The present invention relates generally to computer-implemented graphics systems, and in particular, to selecting objects.
2. Description of the Related Art
Computer-implemented graphics systems have been widely used by designers, illustrators, drafters, and engineers for a number of years. Most such graphics systems use a two-dimensional (2D) graphical user interface (GUI) to display graphical images, such as 2D or three-dimensional (3D) models, schematic diagrams, photo-realistic images, etc.
Graphic applications typically represent objects (e.g., a tree, a wall, a switch, etc.) with graphical elements that have a different visual representation than their actual physical construction. Such a visual representation may consist of multiple discrete objects. For example, a gross level of such visual representation is a simple circle with the letters “MH” inside that might be indicative of a manhole in a street plan. Such a visual representation may be comprised of multiple discrete objects such as a circle object and a text object. The discrete objects may also consist of multiple objects. For example, the text “MH” may consist of multiple stroke objects for each line that comprises each letter. Another slightly more subtle example is a gas line that is displayed as a dashed patterned line when in fact the physical gas line is continuous. The dashed patterned line may consist of multiple discrete line objects for each dash. A further example is a closed polygon representing a land parcel where the graphical representation is only the boundary, while the physical manifestation is actually the enclosed area.
Users often select one or more objects in a graphics program. The selected objects may then be modified, edited, deleted, etc. When a user seeks to select specific objects for further manipulation or where a user is querying areas for “crossing” objects (i.e., does this building pad cross any gas lines) the graphics program may rely on schematically segmented representations (the individual discrete objects) for providing the objects to answer the search criteria. Specifically, the graphics program determines whether the graphical representation “hits” the area of interest. Such an approach is adequate when all objects are graphically represented as they are physically constructed. However, as noted previously, this is not always the case. For example, to select a dashed pattern line, the user may have to select each individual line segment and not the space between the segments.
In some prior art methods, multiple objects may be “grouped” together by a user such that if one object “hits” the area of interest, all of the other objects in the group are returned to answer the search criteria. However, the grouping must be manually performed by the user or a preexisting object is selected that is already “grouped.”
These problems may be better understood by describing prior art object selection and groups.
Selecting Objects
In prior art graphics programs, before a user can edit one or more objects, a user needs to create a selection set of the objects. A selection set can consist of a single object, or it can be a more complex grouping (e.g., the set of objects of a certain color on a certain layer). A user can create the selection set either before or after choosing an editing command. A user can make several changes to the same selection set. In the prior art, one of the following methods may be used to create selection sets:                1. A user first selects an editing command. A user then select the objects and presses ENTER.        2. A user types in “select”, selects the objects, and presses ENTER.        3. A user selects the objects with the pointing device.        4. A user defines groups.        
When a user chooses an editing command, a graphics program such as AutoCAD® available from the assignee of the present invention, Autodesk, Inc., prompts the user to select objects and replaces crosshairs with a pickbox. The user can then select individual objects with the pointing device or by using the methods described below.
A user can respond to a Select Objects prompt in various ways. For example, a user can select the most recently created object, the previous selection set, or all objects in the drawing. Additionally, a user can add objects to and remove objects from a selection set. More than one selection method may be used to make a selection. For example, to select most of the objects in the graphics area, a user can select all of the objects and then remove the unwanted objects.
A user can also select objects by enclosing them in a selection window. A selection window is a rectangular area that a user defines in the graphics area by specifying two corner points at a Select Objects prompt. In some graphics applications, the order in which the points are specified makes a difference. For example, by dragging from left to right (window selection) selects only objects entirely within the selection area. Dragging from right to left (crossing selection) selects objects within and crossing the selection area. In some graphics applications objects must be at least partially visible to be selected. For example, when selecting objects with the window option, usually the entire object must be contained in the window. However, if the object extends off screen, but all the visible vectors (non-continuous linetypes) can be enclosed within the window, the entire object may be selected.
To select objects within an irregularly shaped area, a user may enclose the objects in a polygon selection window. First, the user creates a window by specifying points to enclose the area. The order in which the points are specified defines a window or a crossing polygon. A window polygon selects only objects that the polygon encloses entirely, and a crossing polygon selects objects the polygon encloses or crosses.
To select objects within an irregularly shaped area, graphics programs may utilize one or more of the following steps:                1. At the Select Objects prompt, the user enters cp for Crossing Polygon.        
2. The user specifies points from left to right to define an area that entirely encloses the desired lines.
3. The user presses ENTER to close the polygon and complete the selection.
A user can select nonadjacent objects in a complex drawing most easily with a selection fence. A fence is a line that selects all the objects it passes through. To select nonadjacent objects with a fence, a graphics program may utilize one or more of the following steps:                1. At the Select Objects prompt, the user enters f (Fence).        2. The user specifies the fence points.        3. The user presses ENTER to complete the selection.        
It is difficult to select objects that are close together or lie directly on top of one another. In some graphics programs, a user can use the pick button to cycle through such objects, one after the other, until the user reaches the one desired.
To cycle through objects for selection, some graphics programs utilize one or more of the following steps:                1. At the Select Objects prompt, the user holds down CTRL and selects a point as near as possible to the object desired.        2. The user then presses the pick button on the pointing device (e.g., a mouse) repeatedly until the object desired is highlighted.        3. The user presses ENTER to select the object.        
A user can control how objects are selected by choosing the selection mode, pickbox size, and object sorting method. A user can also limit selection sets by property, such as color, or by object type by using filter lists. For example, objects may be filtered such that only the red objects in a circuit board drawing or only objects on a certain layer are selected. A filter list may be created after starting an editing command. Filter lists can also be named and saved in a file for repeat use.
After a user creates a selection set, individual objects can be removed from that set. For example, an entire group of densely grouped objects can be selected and then specific objects from within the group may be removed, leaving only the desired objects left in the set. Further, in some graphics programs, a user can choose to remove objects only while object selection is already in progress or when objects in a selection set are highlighted and have grips. Additionally, in some graphics programs, objects can be removed from a selection set by pressing the SHIFT key as the object is selected.
There are several ways a user can select objects before choosing a method of editing them. For example, the SELECT command provides all the options that can be used at the Select Objects prompt. Objects can also be selected with the pointing device so that they are marked with grips, if grips are turned on (grips mark control locations on a selected object). For example, selecting a block turns on a grip at its insertion point. A selected group doesn't have a location that can be associated with it like the insertion point of a block. When a group is selected, each member of the group is marked with its own grips.
With grips, a user can use the pointing device to combine command and object selection and therefore edit more quickly. When grips are turned on, objects are selected before editing. With the grips, objects can be manipulated with the graphics cursor or keywords. Further, by using grips, a user can reduce the use of menus.
To accommodate the above selection techniques, prior art graphics applications may “cast a ray”. Using such a technique, the user picks a point in space and a ray or vector is cast into the viewport database. If an object intersects with the vector, the object is highlighted indicating that the object has been selected. If an object does not intersect with the vector, the object is not highlighted or selected.
Groups
In prior art graphics programs, a group is a named selection set of objects. Unlike unnamed selection sets, groups are saved with the drawing. Group definitions are maintained when a drawing is used as an external reference or inserted in another drawing. However, until external references have been bound and exploded or blocks have been exploded, a user does not have direct access to groups that have been defined in an external reference or block.
When a user creates or edits a group, the user can specify whether it is selectable. If a group is selectable, selecting one of the group's members selects all members in the current space that meet the selection criteria (for example, members on locked layers are not selectable). The ability to select groups is also affected by a PICKSTYLE system variable. When PICKSTYLE is off for group selection, a user can individually select group members. An object can be a member of more than one group. A user can list all of the groups to which a selected object belongs. Further, group members are numerically ordered and can be reordered. Reordering may be useful in some batch operations on objects or when it's important which object is “on top” for display purposes.
When a group is created, the user gives the group a name and description. If a group is copied, the copy is given the default name “Ax” and is considered unnamed. Unnamed groups are not listed in the Object Grouping dialog box unless the user elects to include unnamed objects.
If a member of a selectable group is chosen for inclusion in a new group, all members of that selectable group are included in the new group. A group may be selected by name at a Select Objects prompt. If a PICKSTYLE system variable is set to 1 or 3 and the user selects any member of a selectable group, all group members that meet the selection criteria are selected. Group selection may be toggled on and off by pressing CTRL+A.
All members of selectable groups are also selected when object selection cycling is used. For example, using object selection cycling, an object that lies directly behind another object may be selected. Selecting an object that is a member of multiple selectable groups selects all the members of all the groups that contain that object. To select groups for editing with grips, the pointing device is used to select the group at the Command prompt.
At any time, a user can add or remove group members and rename groups. Also, a user can copy, mirror, and array groups. Erasing a group member deletes that object from the group definition. When a group member is included in a deleted block, the object is deleted from the drawing and also from the group. If deleting an object or removing it from a group leaves the group empty, the group remains defined. A group definition can be removed by exploding the group. Exploding groups deletes them from a drawing. Objects that were part of the group remain in the drawing.
A user can alter the group's member order, its description, and whether it's selectable. Two methods may be utilized to reorder group members: change the numerical position of individual or ranges of group members, or reverse the order of all members.
As described above, selecting objects and defining groups are manual processes that must be performed by a user. It is desirable to have an automated process for selecting objects without a user having to toggle through multiple objects or manually select the objects.